package algorithm.linetable.array;
//数组去重，要求不能开辟新的内存空间来定义一个新数组
public class ArrayDistinct {
    public int sortdistinct(int[] array){
        //先对数组排序
        int i,j,temp,index;
        for(i=0;i<array.length;i++){
            for(j=i+1;j<array.length;j++){
                if(array[i]>array[j]){
                    temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;

                }
            }
        }
        for (i=0;i<array.length;i++
             ) {
            System.out.print(array[i]+" ");

        }
        System.out.println();
        //去重思路，先对数组循环，每循环一次判断一次
        //第一次循环，当前循环元素和第一个元素值相比较，如果不相等，把当前元素的值赋给第二个元素，然后index往后移
        //以此类推，循环结束后，返回不重复的数组长度index
        index = 1;
        for(i=1;i<array.length;i++){
            if(array[i] != array[index-1]){
                //array[index++] = array[i];
                //这里的array[index++]和下面的两行代码一个效果，上述更加简洁；
                //循环里根据条件判断，来移动下角标
                array[index] = array[i];
                index++;
            }
        }

        for(i=0;i<index;i++){
            System.out.print(array[i]+" ");
        }
        return index;
    }


    public static void main(String[] args) {
        ArrayDistinct aydt = new ArrayDistinct();
        int[] test={1,5,6,7,4,4,3,3,8,2,2,6,5,9,1,1,5,3,7};
        aydt.sortdistinct(test);
    }
}
